// 引入路由中用于权限显示的对象
import { asyncRoutes, constantRoutes } from '@/router'

const state = {
  routes: []
}
const mutations = {
  setRoutes(state, asyncRoutes) {
    // 将静态页面和有权限的动态路由合并
    const arr = [...constantRoutes, ...asyncRoutes]
    // 存储在state中
    state.routes = arr
  }
}

const actions = {
  // 封装筛选可用路由的函数
  filterRoutes(store, menus) {
    // state是store本身的值,menus是外部传进来的权限数组
    // 过滤动态路由,menus中有相对对应的名字就会保留
    const arr = asyncRoutes.filter(route => menus.indexOf(route.name) > -1)
    // 将过滤的动态路由交给 mutations
    store.commit('setRoutes', arr)
    // 返回得到过滤后的相对应的路由
    return arr
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
